package com.pd.kit;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: dong peng
 * @Date: 2018/3/6 17:54
 * @Description: 单机可用 根据规则生成唯一序列号   时间戳+标识符+10位数字
 */

public class SeqNumGeneration {

    private static int count = 0;

    private static String fmtDate() {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        return format.format(new Date());
    }

    /**
     * 业务流水号(唯一标示一笔业务)
     * 由业务前缀(2字符,参见SeqNumGeneration.BizEnum)+日期时间(yyyyMMddHHmmss)+流水号(6位数字)组成
     *
     * @return
     */
    public synchronized static String generateBizSeqNo(BizEnum constant){
        String dateStr = fmtDate();
        count++;
        if (count > 100000000){
            count = 0;
        }
        String tmp = String.valueOf(count);
        while (tmp.length() < 6) {
            tmp = "0"+tmp;
        }
        return constant.name() + dateStr + tmp;
    }


    enum  BizEnum {
        CM; // 代表本系统
    }
}
